1

ความรู้เบื้องต้นเกี่ยวกับเอเจนต์แก้ปัญหา

PolyU COMP5511Lecture 2
00:00

จากรีเฟล็กซ์สู่การวางแผน

ในวิวัฒนาการของการออกแบบเอเจนต์ เราได้ก้าวจาก รีเฟล็กซ์เอเจนต์ซึ่งจับคู่การรับรู้เข้ากับการกระทำโดยตรงตามกฎง่าย ๆ (เช่น “ถ้ารถคันหน้าเบรก ให้เริ่มเบรก”) ไปสู่ เอเจนต์แก้ปัญหา. รีเฟล็กซ์เอเจนต์ทำงานบนบริบทที่เกิดขึ้นทันที ในขณะที่เอเจนต์แก้ปัญหาเป็นแบบ มุ่งเป้าหมาย. เอเจนต์เหล่านี้พิจารณาผลลัพธ์ในอนาคตของการกระทำเพื่อค้นหาลำดับการกระทำที่บรรลุวัตถุประสงค์ที่กำหนด

  • รีเฟล็กซ์เอเจนต์: $Action = Function(Percept)$
  • เอเจนต์วางแผน: $Action\_Sequence = Search(State, Goal)$

การแทนสถานะแบบอะตอมมิก

ในระดับพื้นฐานนี้ เอเจนต์ใช้ การแทนแบบอะตอมมิก. หมายความว่าสถานะของโลกถูกมองเป็นกล่องดำ—โหนดเดี่ยวที่ไม่มีโครงสร้างภายในให้อัลกอริทึมการค้นหาเห็น เอเจนต์ให้เหตุผลเฉพาะเกี่ยวกับ:

  • สถานะ ($S$): ภาพรวมของสภาพแวดล้อม ณ ช่วงเวลาหนึ่ง
  • การกระทำ ($A$): การเปลี่ยนผ่านระหว่างสถานะ
  • การทดสอบเป้าหมาย: การตรวจสอบแบบบูลีนว่าสถานะ $s \in S_{goal}$ หรือไม่

วงจรการแก้ปัญหา

เอเจนต์แก้ปัญหาปฏิบัติตามวงจร 4 ขั้นตอนที่ชัดเจนเพื่อนำทางในสภาพแวดล้อม:

  1. การกำหนดเป้าหมาย: การตัดสินใจว่าจะ pours เป้าหมายใดตามสถานการณ์ปัจจุบัน
  2. การกำหนดปัญหา: การย่อโลกจริงให้เป็นแบบจำลองทางคณิตศาสตร์ (สถานะและการกระทำ)
  3. การค้นหา: การจำลองลำดับการกระทำเพื่อค้นหา เส้นทางที่เหมาะสมที่สุด.
  4. การดำเนินการ: การดำเนินการตามการกระทำที่พบในขั้นตอนการค้นหาโดยไม่ต้องพิจารณาเพิ่มเติม (สมมติว่าสภาพแวดล้อมคงที่)
การใช้งานใน Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)